package org.springblade.modules.admin.service;

import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R;
import org.springblade.modules.admin.dto.ai.RobotCreatePlanDTO;
import org.springblade.modules.admin.entity.ChatGroupBuilding;
import org.springblade.modules.admin.vo.ai.RobotCreatePlanVO;
import org.springblade.modules.admin.vo.ai.RobotPlanDetailVO;

import java.time.LocalDate;
import java.util.Date;
import java.util.List;

/**
 * 群聊-项目Service
 * @author: Sharry
 * @createTime: 2023/5/18 16:37
 * @version: Version-1.0
 */
public interface IChatGroupBuildingService extends BaseService<ChatGroupBuilding> {
	/**
	 * 根据 chatroomId 获取当前项目梯号列表
	 * @param roomId 群聊id
	 * @return 梯号列表
	 */
	List<String> getElevatorAddressListByChatroomId(String roomId);

	/**
	 * 根据 chatroomId 获取当前项目梯信息列表
	 * @return 梯号列表
	 */
	List<RobotCreatePlanVO> getElevatorListByChatroomId(RobotCreatePlanDTO robotCreatePlanDTO);

	/**
	 * 根据 planId 获取当前项目计划详情
	 * @param planId 计划id
	 * @return 计划详情结果
	 */
	RobotPlanDetailVO getWorkPlanDetailByPlanId(Long planId);

	/**
	 * 根据梯号获取当前项目计划列表
	 * @param startDate 开始日期
	 * @param endDate 结束日期
	 * @return 计划列表
	 */
	List<RobotPlanDetailVO> getWorkPlanListByElevator(Long elevatorId, Date startDate, Date endDate);

	/**
	 * 根据现有少许条件创建维修工单
	 * @param robotCreatePlanVO 现有的梯id、项目id，租户id条件
	 * @param robotCreatePlanDTO 用户输入的信息
	 * @return 创建后的工单主表id
	 */
	Long createWxPlanFromRobot(RobotCreatePlanVO robotCreatePlanVO, RobotCreatePlanDTO robotCreatePlanDTO);

	/**
	 * 根据现有少许条件创建救援工单
	 * @param robotCreatePlanVO 现有的梯id、项目id，租户id条件
	 * @param robotCreatePlanDTO 用户输入的信息
	 * @return 创建后的工单主表id
	 */
	Long createKrPlanFromRobot(RobotCreatePlanVO robotCreatePlanVO, RobotCreatePlanDTO robotCreatePlanDTO);
}
